/*** Created Time: 2022年5月10日 14:29:09 ***/
/*** Author: Eric                        ***/

#include <onix/onix.h>
#include <onix/interrupt.h>
#include <onix/debug.h>

#define     LOGK(fmt, args...)      DEBUGK(fmt, ##args)

extern void memory_map_init(void);
extern void mapping_init(void);
extern void arena_init(void);
extern void clock_init(void);
extern void time_init(void);
extern void rtc_init(void);
extern void hang(void);
extern void keyboard_init(void);
extern void task_init(void);
extern void syscall_init(void);
extern void tss_init(void);

void kernel_init()
{
    tss_init();
    memory_map_init();
    mapping_init();
    arena_init();

    interrupt_init();
    clock_init();
    keyboard_init();
    time_init();
    // rtc_init();

    task_init();
    syscall_init();

    set_interrupt_state(true);

    // asm volatile("sti");
    // hang();

    return;
}